package com.microservice.common.annotation;

import java.lang.annotation.*;

/**
 * 角色注解 - 用于标记需要特定角色才能访问的方法或类
 * 
 * 使用示例：
 * @RequireRole("ROLE_ADMIN")
 * @RequireRole(value = {"ROLE_ADMIN", "ROLE_AUDITOR"}, logical = RequireRole.Logical.OR)
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequireRole {
    /**
     * 需要的角色编码
     */
    String[] value();
    
    /**
     * 角色关系：AND-需要所有角色，OR-需要任一角色
     */
    Logical logical() default Logical.OR;
    
    enum Logical {
        /** 需要所有角色 */
        AND,
        /** 需要任一角色 */
        OR
    }
}
